home *** CD-ROM | disk | FTP | other *** search
/ System Booster / System Booster.iso / Archives / ForCLI / 0Utils13.lha / 0Utils / SetOwner.c < prev    next >
C/C++ Source or Header  |  1995-04-05  |  3KB  |  130 lines

  1.  
  2. /******************************************************************************
  3.  
  4.     MODULE
  5.     SetOwner.c
  6.  
  7.     DESCRIPTION
  8.     change the Ownership for a file
  9.  
  10.     NOTES
  11.     Kickstart 3.0+ required
  12.     compiles w/ SAS/C v6.51
  13.  
  14.     as is this simple prog is mostly senseless ...
  15.  
  16.     BUGS
  17.     none known
  18.  
  19.     TODO
  20.     we should better add
  21.     * access to an id database instead of simple ownership id
  22.  
  23.     EXAMPLES
  24.  
  25.     SEE ALSO
  26.  
  27.     INDEX
  28.  
  29.     HISTORY
  30.     26-03-95 b_noll created
  31.  
  32.     AUTHOR
  33.     Bernd Noll, Brunnenstrasse 55, D-67661 Kaiserslautern
  34.     b_noll@informatik.uni-kl.de
  35.  
  36. ******************************************************************************/
  37.  
  38. /**************************************
  39.         Includes
  40. **************************************/
  41.  
  42. #ifndef   EXEC_LIBRARIES_H
  43. # include <exec/libraries.h>
  44. #endif /* EXEC_LIBRARIES_H */
  45.  
  46. #ifndef   CLIB_EXEC_PROTOS_H
  47. # include <clib/exec_protos.h>
  48. #endif /* CLIB_EXEC_PROTOS_H */
  49.  
  50. #ifndef   DOS_DOS_H
  51. # include <dos/dos.h>
  52. #endif /* DOS_DOS_H */
  53.  
  54. #ifndef   CLIB_DOS_PROTOS_H
  55. # include <clib/dos_protos.h>
  56. #endif /* CLIB_DOS_PROTOS_H */
  57.  
  58. #include <proto/dos.h>
  59. #include <proto/exec.h>
  60.  
  61. /**************************************
  62.      Defines & Structures
  63. **************************************/
  64.  
  65. #ifndef ABSEXECBASE
  66. #define ABSEXECBASE ((struct ExecBase **)4L)
  67. #endif
  68.  
  69. struct _arg {
  70. /* ******************** USER FORMAT ******************** */
  71. #define FORMAT "PATH/M/A,OWNERID/N/A"
  72.  
  73.     STRPTR *path;
  74.     ULONG  *ownerid;
  75.  
  76. /* ******************** USER FORMAT ******************** */
  77. }; /* struct _argv */
  78.  
  79. #define MAXPATHLEN 256
  80. #define MAXLINELEN 256
  81.  
  82. #define VERSIONPREFIX    "\0$VER: "
  83. #define VERSIONOFFSET    0
  84. #define FORMATPREFIX    "\0$ARG: "
  85. #define FORMATOFFSET    7
  86.  
  87. /**************************************
  88.         Implementation
  89. **************************************/
  90.  
  91. long _main (void)
  92. {
  93.     const char* version = VERSIONPREFIX "SetOwner 1.0 " __AMIGADATE__  + VERSIONOFFSET;
  94.     long retval = RETURN_FAIL;
  95.     struct ExecBase*SysBase = *ABSEXECBASE;
  96.     struct Library* DOSBase;
  97.  
  98.     if (DOSBase = OpenLibrary (DOSNAME, 37)) {
  99.     struct _arg argv = { 0 };
  100.     APTR   args;
  101.     retval     = RETURN_ERROR;
  102.     if (args = (void*)ReadArgs(FORMATPREFIX FORMAT + FORMATOFFSET, (LONG*)&argv, NULL)) {
  103.  
  104. /* ******************** USER BODY ******************** */
  105.         if (((struct Library *)DOSBase)->lib_Version >= 39) {
  106.         int i;
  107.         retval = RETURN_OK;
  108.         for (i = 0; argv.path[i] && !retval; ++i) {
  109.             if (!SetOwner (argv.path[i], *argv.ownerid))
  110.             retval = RETURN_ERROR;
  111.         } /* for */
  112.         } else
  113.         SetIoErr(ERROR_INVALID_RESIDENT_LIBRARY);
  114. /* ******************** USER BODY ******************** */
  115.         FreeArgs (args);
  116.     } /* if */
  117.  
  118.     if (retval > RETURN_WARN)
  119.         PrintFault(IoErr(), "SetOwner");
  120.  
  121.     CloseLibrary (DOSBase);
  122.     } /* if */
  123.     return (retval);
  124. } /* _main */
  125.  
  126. /******************************************************************************
  127. *****  END SetOwner.c
  128. ******************************************************************************/
  129.  
  130.